/*
 * Tencent is pleased to support the open source community by making Blueking Container Service available.
 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
 * Licensed under the MIT License (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * http://opensource.org/licenses/MIT
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package register

type Node interface {
	PrimaryKey() string
	Payload() []byte

	// It knows if given payload was genereate from node
	OwnsPayload([]byte) bool
}

// DummyNode is dummy, it has an ID field which will be using as primary key
type DummyNode struct {
	Id string
}

func (n *DummyNode) PrimaryKey() string {
	return n.Id
}

func (n *DummyNode) Payload() []byte {
	result, _ := json.Marshal(n)
	return result
}

func (n *DummyNode) OwnsPayload(payload []byte) bool {
	var result DummyNode
	err := json.Unmarshal(payload, &result)
	if err != nil {
		return false
	}
	return result.PrimaryKey() == n.PrimaryKey()
}
